package com.afollestad.materialcamera.internal;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
import com.afollestad.materialcamera.R;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
public class PreviewFragment extends Fragment implements View.OnClickListener,CameraUriInterface{
private VideoView videoView;
private String uri;
private ImageView play;
// private int type;
private BaseCaptureInterface mInterface;
public static PreviewFragment newInstance(String outputUri, boolean allowRetry, int primaryColor) {
final PreviewFragment fragment = new PreviewFragment();
fragment.setRetainInstance(true);
Bundle args = new Bundle();
// args.putString("output_uri", outputUri);
// args.putInt("type", type);
args.putString("output_uri", outputUri);
args.putBoolean(CameraIntentKey.ALLOW_RETRY, allowRetry);
args.putInt(CameraIntentKey.PRIMARY_COLOR, primaryColor);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
uri = getArguments().getString("output_uri");
// type = getArguments().getInt("type");
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_preview_record, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
videoView = (VideoView) view.findViewById(R.id.videoView);
ImageView back = (ImageView) view.findViewById(R.id.record_back);
TextView next = (TextView) view.findViewById(R.id.record_next);
play = (ImageView) view.findViewById(R.id.record_play);
back.setOnClickListener(this);
next.setOnClickListener(this);
play.setOnClickListener(this);
mInterface = (BaseCaptureInterface) getActivity();
if (uri != null && !uri.equals("")) {
videoView.setVideoURI(Uri.parse(uri));
videoView.start();
} else {
Toast.makeText(getActivity(), "视频地址错误", Toast.LENGTH_SHORT).show();
}
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
play.setVisibility(View.VISIBLE);
}
});
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.record_back) {
hideFragment();
} else if (id == R.id.record_play) {
if (uri != null && !uri.equals("")) {
videoView.setVideoURI(Uri.parse(uri));
videoView.start();
play.setVisibility(View.GONE);
} else {
Toast.makeText(getActivity(), "视频地址错误", Toast.LENGTH_SHORT).show();
}
} else if (id == R.id.record_next) {
Intent intent = new Intent();
intent.putExtra("videoUrl", uri);
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
}
}
private void hideFragment() {
new MaterialDialog.Builder(getActivity())
.title("提示")
.content("要放弃当前拍摄的视频吗?")
.positiveText("确认")
.negativeText("取消")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) {
//重新拍摄
mInterface.onRetry(getOutputUri());
}
})
.show();
}
@Override
public String getOutputUri() {
return uri;
}
}